/**
 *列表型数据 -> 树形数据
 *@params
 *{list} Array        列表数据
 *{rootValue}  Number 根节点的值
 * */

export const translateListToTree = (list, rootValue) => {
  // 核心逻辑: 遍历列表数据，找到父级部门，递归思想(找规律)，生成树形数据
  // 结论: 子级部门的pid === 父级部门的id
  // 递归: 一般处理未知层级的数据
  // 特点: 函数内自己调用自己  / 要有结束条件(出口) -> 参数不能重复

  const arr = [] // 存储最终的树形数据
  // 遍历列表数据
  list.forEach(item => {
    // 获取/确定一级部门
    if (item.pid === rootValue) {
      // 根据柜子 获取/确定二级/三级/四级部门
      // 查找原则: 通过父级确定子级 -> 传入父级部门的id (子级部门的pid === 父级部门的id)
      const children = translateListToTree(list, item.id)
      if (children.length) {
        item.children = children
      }

      // list.forEach(citem => {
      //   if (citem.pid === item.id) {
      //     console.log('二级部门', citem)
      //     item.children = item.children || []
      //     item.children.push(citem)
      //   }
      // })
      arr.push(item)
    }
  })
  return arr
}
